﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Model.Orden;
using System.Data.SqlClient;
using System.Collections.ObjectModel;

namespace DataBase.Orden
{
    public static class DBPunto
    {
        static string connect = "Data Source=JCIDatabase.db.10200093.hostedresource.com; Initial Catalog=JCIDatabase; User ID=JCIDatabase; Password='ucbJCI2012!'";
      
        public static bool ModificarPuntos(string Nro, List<Punto> punto)
        {
            bool res;
            res = DBPunto.BorrarPuntosDeOrden(Nro);

            if (res)
            {
                SqlConnection conn = null;
                try
                {
                    conn = new SqlConnection(connect);
                    conn.Open();
                    for (int i = 0; i < punto.Count; i++)
                    {
                        SqlCommand command2 = conn.CreateCommand();
                        if (punto[i].Contenido != null)
                        {
                            command2.CommandText = "INSERT INTO Punto (Nro,Punto,NombreDePunto,Contenido) VALUES(@nro,@punto,@nombreDePunto,@contenido)";
                            command2.Parameters.AddWithValue("contenido", punto[i].Contenido);

                        }
                        else
                        {
                            command2.CommandText = "INSERT INTO Punto (Nro,Punto,NombreDePunto) VALUES(@nro,@punto,@nombreDePunto)";

                        }
                        command2.Parameters.AddWithValue("nro", punto[i].Nro);
                        command2.Parameters.AddWithValue("punto", punto[i].NumeroPunto);
                        command2.Parameters.AddWithValue("nombreDePunto", punto[i].NombreDePunto);
                        command2.ExecuteNonQuery();
                    }
                }
                catch (Exception e)
                {

                    throw e;
                }

            }
            else
                res = false;
            return res;
        }

        public static bool BorrarPuntosDeOrden(string Nro)
        {
            bool res = false;
            SqlConnection conn = null;
            try
            {
                conn = new SqlConnection(connect);
                SqlCommand comando = conn.CreateCommand();
                comando.CommandText = "Delete from Punto where Nro = @nro";
                comando.Parameters.AddWithValue("nro",Nro);
                conn.Open();
                comando.ExecuteNonQuery();
                res = true;
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                if (conn != null)
                    conn.Dispose();
            }
            return res;
        }
        public static List<Model.Orden.Punto> puntosDeNro(string nro)
        {
            List<Model.Orden.Punto> puntos = null;
            SqlConnection conn = null;
            try
            {
                conn = new SqlConnection(connect);
                SqlCommand comm = conn.CreateCommand();
                comm.CommandText = "SELECT Punto,NombreDePunto,Contenido FROM [Punto] WHERE Nro=@nro";
                comm.Parameters.AddWithValue("nro", nro);
                conn.Open();
                SqlDataReader reader = comm.ExecuteReader();
                puntos = new List<Model.Orden.Punto>();
                while (reader.HasRows)
                {
                    reader.Read();
                    Model.Orden.Punto punto = new Model.Orden.Punto();
                    punto.Contenido = reader["Contenido"].ToString();
                    punto.NombreDePunto = reader["NombreDePunto"].ToString();
                    punto.NumeroPunto = reader["Punto"].ToString();
                    puntos.Add(punto);
                }
            }

            catch(Exception e)
            {
                
            }
            finally
            {
                if (conn != null)
                    conn.Dispose();
            }
            return puntos;
        }
        public static Collection<Model.Orden.Punto> puntosDeNroCollection(string nro)
        {
            Collection<Model.Orden.Punto> puntos = null;
            SqlConnection conn = null;
            try
            {
                conn = new SqlConnection(connect);
                SqlCommand comm = conn.CreateCommand();
                comm.CommandText = "SELECT Punto,NombreDePunto,Contenido FROM [Punto] WHERE Nro=@nro";
                comm.Parameters.AddWithValue("nro", nro);
                conn.Open();
                SqlDataReader reader = comm.ExecuteReader();
                puntos = new Collection<Model.Orden.Punto>();
                while (reader.HasRows)
                {
                    reader.Read();
                    Model.Orden.Punto punto = new Model.Orden.Punto();
                    punto.Contenido = reader["Contenido"].ToString();
                    punto.NombreDePunto = reader["NombreDePunto"].ToString();
                    punto.NumeroPunto = reader["Punto"].ToString();
                    puntos.Add(punto);
                }
            }

            catch (Exception e)
            {

            }
            finally
            {
                if (conn != null)
                    conn.Dispose();
            }
            return puntos;
        }
    }
}
